<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Object.defineProperty方法</title>
</head>
    <body>
        <script type="text/javascript">
            let number = 18;
            let person = {
                name:'小宝',
                sex:'男',
                // age:18
            }

            //Object.defineProperty()方法：为指定的对象定义属性
            //方法需要传入3个参数：1、指定的对象名；2、添加的属性名（需要用''来包含）；3、属性配置项{例如getter、setter常用的方法等}
            Object.defineProperty(person, 'age', {
                // value:18,   //定义属性的值
                // enumerable:true,    //控制属性是否可以枚举（例如；如果不定义，所添加的属性是无法被遍历的），默认值是false
                // writable:true,      //控制属性是否可以被修改，默认值是false
                // configurable:true,  //控制属性是否可以被删除，默认值是false

                //当有人读取person的age属性时，get函数(getter)就会被调用
                get:function(){
                    console.log('有人读取age属性了');
                    //返回age的值（将变量number的值，返回赋值给当前person对象的age属性）
                    return number;
                },

                //当有人修改preson的age属性时，set函数(setter)就会被调用，且会收到修改的具体值
                set:function(value){
                    console.log('有人修改了age属性，且值是',value);
                    number = value;
                }
            })
        </script>
        
    </body>
</html>